package com.sailfish.springbootdemo.service.db1;

import com.sailfish.springbootdemo.pojo.Result;
import com.sailfish.springbootdemo.pojo.db1.PcbaDeviceResource;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface PcbaDeviceResourceService {

    /**
     * 根据设别类型 + 搜索条件 查询 [基线]
     *
     * @param searchValue
     * @param pcbaDeviceTypeId
     * @param isTechOwn
     * @return
     */
    Result getAllByDeviceTypeAndSearch(String searchValue, Integer pcbaDeviceTypeId, Integer pcbaDeviceResourceId, Integer isTechOwn, Integer status, Integer brandId, Integer brandTypeId, Integer auditStatusBase, Integer auditStatusTech, Integer page, Integer pageSize);

    /**
     * 查询所有设备资源
     *
     * @return
     */
    Result getAllPcbaDeviceResource();

    /**
     * 删除
     *
     * @param pcbaDeviceResourceId
     * @return
     */
    Result deleteById(Integer pcbaDeviceResourceId);

    /**
     * 新增或者更新，同时需要新增 参数设备关联表[基线参数]
     *
     * @param data
     * @return
     */
    Result addOrUpdateDeviceAndParamRelated(String data);

    /**
     * 新增或者更新，同时需要新增 参数设备关联表[工艺参数]
     *
     * @param data
     * @return
     */
    Result addOrUpdateTechAndParamRelated(String data);

    /**
     * 校验唯一性
     *
     * @param pcbaDeviceTypeId
     * @param brandId
     * @param brandTypeId
     * @param notes
     * @param pcbaDeviceResourceId
     * @return
     */
    Result judgeUnique(Integer pcbaDeviceTypeId, Integer brandId, Integer brandTypeId, String notes, Integer pcbaDeviceResourceId);

    Result judgeUniqueByDeviceTypeAndBrandAndBrandType(Integer pcbaDeviceTypeId, Integer brandId, Integer brandTypeId, Integer pcbaDeviceResourceId);

    /**
     * 导出设备资源池 + 基线参数
     *
     * @param data
     * @return
     */
    Result exportDeviceResourceAndPcbaDeviceParamTable(String data);

    /**
     * 导出设备资源池 + 基线参数[空模板]
     *
     * @param pcbaDeviceTypeIds
     * @return
     */
    Result exportDeviceResourceAndPcbaDeviceParamTableOfTemplates(String pcbaDeviceTypeIds);

    /**
     * 导出设备资源池 + 工艺参数
     *
     * @param data
     * @return
     */
    Result exportDeviceResourceAndTechDeviceParamTable(String data);


    /**
     * 批量导入设备资源(基线)
     *
     * @param file
     * @return
     */
    Result importPcbaDeviceResourcesExcel(MultipartFile file);

    /**
     * 批量导入设备资源(基线)V2
     *
     * @param file
     * @return
     */
    Result importPcbaDeviceResourcesExcelV2(MultipartFile file);

    /**
     * 批量修改设备资源 的值（for 新增的能力项）
     *
     * @param file
     * @return
     */
    Result importPcbaDeviceResourcesBulkUpdateForParamAdd(MultipartFile file);

    /**
     * 确认提交 批量修改设备资源 的值（for 新增的能力项）
     *
     * @param data
     * @return
     */
    Result submitImportPcbaDeviceResourcesBulkUpdateForParamAdd(String data);

    /**
     * 将解析结果二次确认后 批量修改到数据库(基线)
     *
     * @param data
     * @return
     */
    Result submitImportPcbaDeviceResourcesData(String data);

    /**
     * 批量导入设备资源(工艺)
     *
     * @param file
     * @return
     */
    Result importTechDeviceResourcesExcel(MultipartFile file);

    /**
     * 将解析结果二次确认后 批量修改到数据库（工艺）
     *
     * @param data
     * @return
     */
    Result submitImportTechDeviceResourcesData(String data);

    /**
     * 审核基线资源池
     */
    Result auditPcbaDeviceResource(Integer pcbaDeviceResourceId, Integer auditStatusBase, String auditRemarkBase);

    /**
     * 审核工艺资源池
     */
    Result auditTechDeviceResource(Integer pcbaDeviceResourceId, Integer auditStatusTech, String auditRemarkTech);

    /**
     * 新增基线资源（Excel 导入时的操作）
     */
    Result addResourceByExcel(String data);

    /**
     * 覆盖当前资源池
     */
    Result coverResourceByExcel(String data);

}
